#!/usr/bin/env python

from __future__ import print_function

__doc__ = """
Print conf file as variable assignments.

The output format is
<section>_<option>=<value>

If multiple files are specified, the result is a set of options
merged by sections.  In the case of option name conflicts, the last
definition wins.

Multiline config breaks variables. If any are found, they're skipped
(with a warning).

"""

import argparse
import configparser
import logging
import os
import sys


if __name__ == "__main__":
    logging.basicConfig(level=logging.WARN)
    logger = logging.getLogger(__name__)

    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument(
        "conf_files", nargs="+", help="Configuration files to read in")
    args = parser.parse_args()

    cp = configparser.ConfigParser()
    for cf in args.conf_files:
        cp.read_file(open(cf))

    for s in cp.sections():
        for o in cp.options(s):
            v = cp.get(s, o)
            if "\n" in v:
                logger.warning(
                    "option {s}:{o} contains newline; skipping".format(s=s, o=o))
                continue
            print("{s}_{k}={v}".format(
                s=s.replace("-", "_"),
                k=o.replace("-", "_"),
                v=v))

# <LICENSE>
# Copyright 2014 UTA Contributors (https://bitbucket.org/biocommons/uta)
##
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
##
# http://www.apache.org/licenses/LICENSE-2.0
##
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# </LICENSE>
